package com.healthcloud.service.patient;

import com.healthcloud.dto.res.CountSpecsRes;
import com.healthcloud.entity.patient.PatientDataEntity;
import com.healthcloud.utils.PageParam;

import java.util.List;

/**
 * 患者数据
 *
 * @author zhangjie
 */
public interface PatientDataService {
    PatientDataEntity queryObject(Integer id);

    List<PatientDataEntity> queryList(PatientDataEntity bean, PageParam pageParam);

    int queryTotal(PatientDataEntity bean);

    void save(PatientDataEntity patientData);

    void update(PatientDataEntity patientData);

    void delete(Integer id);

    void deleteBatch(Integer[] ids);

    void saveOrUpdate(PatientDataEntity entity);

    PatientDataEntity queryByIdCard(String idCard);

    /**
     * 根据身份证号，查询特殊处理备注
     *
     * @param idCard
     * @return
     */
    String getSpecRemarkByIdCard(String idCard);

    /**
     * 统计近一个月每天的特殊处理患者人数
     *
     * @return
     */
    List<CountSpecsRes> countSpecsLastMonth(String ids);

    /**
     * 统计近每个月特殊处理患者人数
     *
     * @return
     */
    List<CountSpecsRes> countSpecsPerMonth(String ids, String year);


    /**
     * 修改患者数据的特殊处理备注
     *
     * @param data
     * @return
     */
    Boolean updateSpecRemark(PatientDataEntity data);

    /**
     * 根据身份证号，查询最近7天是否未测量过血压
     * @param idCard 身份证号
     * @return true 代表未测量过，false 代表没有绑定仪器或已测量过
     */
    boolean queryNotBpTestDataSevenDays(String idCard);

    /**
     * 根据身份证号，查询最近7天是否未测量过血糖
     * @param idCard 身份证号
     * @return true 代表未测量过，false 代表没有绑定仪器或已测量过
     */
    boolean queryNotBgTestDataSevenDays(String idCard);

}